package wangchao.validate.filter;

import com.alibaba.fastjson.JSONObject;
import org.aspectj.lang.ProceedingJoinPoint;

import java.lang.reflect.Method;
import java.lang.reflect.Parameter;

/**
 * 验证接口流程类
 * Created by ashin on 2018/11/2.
 */
public interface DataValidateFilter {

    String CODE = "code";

    String MESS = "mess";

    int sCode = 1;

    int eCode = 99;

    String SUCCESS = "success";

    String FAIL = "fail";

    /**
     * 报错信息
     */
    String ERROR_MSG = "errorMsg";

    /**
     * 报错字段
     */
    String KEY = "key";

    /**
     * 报错数组字段
     */
    String VALIDATES = "validates";

//    /**
//     * 验证类
//     *
//     * @param clazz
//     * @return
//     */
//    JSONObject invokeClassValidate(Class<?> clazz);

    /**
     * 验证方法
     *
     * @param method
     * @return
     */
    JSONObject invokeMethodValidate(Method method, JSONObject jsonObject);

    /**
     * 验证参数
     *
     * @param parameter
     * @return
     */
    JSONObject invokeFieldValidate(Parameter parameter, String objectKey, Object object);

    /**
     * 执行aop验证完整方法
     * @return
     */
    JSONObject invokeAOP(ProceedingJoinPoint joinPoint)  throws Throwable ;

}
